/** runtimeSettings(rts) 包含两部分：
  1、企业级配置 放在 publice/config/settings.json中，可提供给运维人员维护
  2、用户个性化 设置 会保存在 local Storage 中，由用户自己维护

  用户设置 > 企业组设置 > 默认设置
*/
import { getJson } from '@/utils';
import type { MenuTheme } from 'antd';

/**
 * 企业级可配置信息
 */
export type SysSettings = {
  title: string;
  logo: string;
  SinglePage: false;
} & any;

const key = 'usersetting'; // cpas_token
/**
 * 用户 个性化设置配置都放这，会保存在 local Storage 中
 */
export type UserSettings = {
  navTheme?: MenuTheme | 'realDark' | undefined;
  primaryColor?: string; // 主题色 def #1890ff
  siderWidth?: number; // def 208
  layout?: 'side' | 'top' | 'mix';
  singlePage?: boolean;
};
// 获取
function getUserSetting(): UserSettings {
  const str = localStorage.getItem(key) || '';
  if (!str) {
    return {};
  }
  return JSON.parse(str) as UserSettings;
}
// 设置
function saveUserSetting(setting: UserSettings) {
  localStorage.setItem(key, JSON.stringify(setting));
}
// 删除
function removeUserSetting() {
  return localStorage.removeItem(key);
}
/**
 * 获取 运行期设置参数
 * @returns
 */
export default async function getRTS(): Promise<SysSettings | UserSettings> {
  const sysConf = (await getJson('settings', './')) as SysSettings;
  const userConf = getUserSetting();
  return {
    ...sysConf,
    ...userConf,
  };
}

// export
export { getUserSetting, saveUserSetting, removeUserSetting };
